import axios from 'axios'
import { useUserStore } from '@/stores/index.js'
import { ElMessage } from 'element-plus'
import router from '@/router/index.js'

// const baseURL = 'http://big-event-vue-api-t.itheima.net/'
const baseURL = 'https://fe-bigevent-web.itheima.net/'
// const baseURL = '/api'
const instance = axios.create({
  baseURL,
  timeout: 1000,
})

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么

  // 携带token
  const useStore = useUserStore()
  if (useStore.token) {
    config.headers.Authorization = useStore.token
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
})

// 添加响应拦截器
instance.interceptors.response.use(function (res) {
  if (res.data.code === 0) {
    return res
  }
  // 处理业务失败
  // 摘取核心响应数据
  ElMessage.error(res.data.message || '服务异常!')
  return Promise.reject(res.data)

}, function (error) {
  // 错误的特殊情况 => 401 权限不足, 或者 token 过期 => 拦截到登录
  if (error.response?.status === 401) {
    // 跳转到登录页
    router.push('/login')
  }
  // 错误的默认情况
  ElMessage.error(error.response.data.message || '服务异常!')
  return Promise.reject(error);
});

export default instance
export { baseURL }
